﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
using CapaNegocio;

public partial class abmPresupuesto_ListarPresupuestos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["UsuLogin"] == null)
        {
            Response.Redirect("../Default.aspx", true);
        }
        else
        {
            Usuario usu = ((Usuario)(Session["UsuLogin"]));
            Label1.Text = usu.Apellido + ", " + usu.Nombre + " (" + usu.Perfil.Nombre + ")";
            refreshGrid();
        }
    }

    private void refreshGrid() {

        DataTable dt = new DataTable();
        dt.Columns.Add("NroPresupuesto");
        dt.Columns.Add("NombCliente");
        dt.Columns.Add("ApeCliente");
        dt.Columns.Add("Fecha");
        dt.Columns.Add("Estado");
        DataRow dr;
        List<Presupuesto> presupuestos = Presupuesto.buscarPresupuestos();
        for (int i = 0; i < presupuestos.Count; i++)
        {
            Presupuesto presup = (Presupuesto)presupuestos[i];
            dr = dt.NewRow();
            dr["NroPresupuesto"] = presup.Id;
            dr["NombCliente"] = presup.Nombre;
            dr["ApeCliente"] = presup.Apellido;
            dr["Fecha"] = presup.FechaEstado.ToShortDateString();
            dr["Estado"] = presup.Estado.Descripcion;
            dt.Rows.Add(dr);
        }
        grdPresupuestos.DataSource = dt;
        grdPresupuestos.DataBind();
    }


    protected void grdPresupuestos_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grdPresupuestos.PageIndex = e.NewPageIndex;
        grdPresupuestos.DataBind();
    }

    protected void grdPresupuestos_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataTable dataTable = (DataTable)grdPresupuestos.DataSource;

        if (dataTable != null)
        {
            DataView dataView = new DataView(dataTable);
            dataView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);

            grdPresupuestos.DataSource = dataView;
            grdPresupuestos.DataBind();
        }
    }

    public string SortExpression
    {
        get { return (ViewState["SortExpression"] == null ? string.Empty : ViewState["SortExpression"].ToString()); }
        set { ViewState["SortExpression"] = value; }
    }
    public string SortDirection
    {
        get { return (ViewState["SortDirection"] == null ? string.Empty : ViewState["SortDirection"].ToString()); }
        set { ViewState["SortDirection"] = value; }
    }
    private string GetSortDirection(string sortExpression)
    {
        if (SortExpression == sortExpression)
        {
            if (SortDirection == "ASC")
                SortDirection = "DESC";
            else if (SortDirection == "DESC")
                SortDirection = "ASC";
            return SortDirection;
        }
        else
        {
            SortExpression = sortExpression;
            SortDirection = "ASC";
            return SortDirection;
        }
    }
  
    protected void botonCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../MenuAdministrativo.aspx");

    }
    protected void botonBuscar_Click(object sender, EventArgs e)
    {
        if (!String.IsNullOrEmpty(TextBoxNroPresup.Text))
        {

            Presupuesto presup = Presupuesto.buscarPresupuesto(Convert.ToInt64(TextBoxNroPresup.Text));

            if (presup != null)
            {

                DataTable dt = new DataTable();
                dt.Columns.Add("NroPresupuesto");
                dt.Columns.Add("NombCliente");
                dt.Columns.Add("ApeCliente");
                dt.Columns.Add("Fecha");
                dt.Columns.Add("Estado");
                DataRow dr = dt.NewRow();
                dr["NroPresupuesto"] = presup.Id;
                dr["NombCliente"] = presup.Nombre;
                dr["ApeCliente"] = presup.Apellido;
                dr["Fecha"] = presup.FechaEstado.ToShortDateString();
                dr["Estado"] = presup.Estado.Descripcion;
                dt.Rows.Add(dr);

                grdPresupuestos.DataSource = dt;
                grdPresupuestos.DataBind();
            }
            else
            {
                refreshGrid();
            }
                
        }
        else {
            refreshGrid();
        }
       
    }

    protected void grdPresupuestos_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        Response.Redirect("RealizarPresupuesto.aspx?nroPresupuesto=" + grdPresupuestos.Rows[e.RowIndex].Cells[0].Text+"&action=delete");
    }

    protected void grdPresupuestos_RowEditing(object sender, GridViewEditEventArgs e)
    {
        Response.Redirect("RealizarPresupuesto.aspx?nroPresupuesto=" + grdPresupuestos.Rows[e.NewEditIndex].Cells[0].Text+"&action=edit");
    }
}